#ifndef PAINT_H_
#define PAINT_H_

#include <opencv2/opencv.hpp>
#include "common/map_info.h"
#include <Eigen/Core>

using namespace cv;

class Paint {
 public:
  Paint(/* args */);
  ~Paint();

  void Draw(const autodrive::perception::Map &map);
  void Draw(const std::vector<std::vector<Eigen::Vector2f>> &points);
  void Draw(const std::vector<std::vector<Eigen::Vector2f>> &points,
            std::vector<cv::Mat> &mats);
  void Draw(std::vector<Eigen::Vector2f> &origin_points, const std::vector<std::vector<Eigen::Vector2f>> &points,
            std::vector<cv::Mat> &mats);
  void Show();

 private:
  cv::Mat background_mat_;
  cv::Mat flush_mat_;
  int width_, height_;

  cv::Point vehicle2paint(float x, float y);

  void background(cv::Mat &mat);
};

#endif